package books.CoreJavaVolumeII.Chaper1;

import java.io.IOException;
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.*;

import static java.util.regex.Pattern.compile;

/**
 * @Description
 * @Author bloodcolding
 * @Date 12/31/2020 11:22 PM
 */
public class CreateStream {
    public static void main(String[] args) {
        int[] ints = new int[]{1, 2, 3, 4};
        // 静态创建流的方法
        Stream<String> words = Stream.of("1", "2");
        // 使用Arrays.stream 创建流
        Arrays.stream(ints);
        Arrays.stream(ints, 1, 2);
        // 创建不包含任何数据的流
        Stream<Object> silence = Stream.empty();
        // 使用generate方法，接受一个 Supplier<T> 接口的对象
        Stream<String> echos = Stream.generate(() -> "echo");
        // 产生一个有限序列
        var limit = new BigInteger("100000");
        Stream<BigInteger> integers = Stream.iterate(BigInteger.ZERO, n -> n.compareTo(limit) < 0, n -> n.add(limit));
        // 对象为null，流的长度为0
        Stream.ofNullable("");
        // 正则匹配流
        Stream<String> wordsPattern = compile("\\PL+").splitAsStream("contents");
        // 文本文件读取流
        try {
            Stream<String> lines = Files.lines(Path.of("filePath"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 将Iterable 对象转换为流
        ArrayList<ArrayList> arrayLists = new ArrayList<>();
        StreamSupport.stream(arrayLists.spliterator(), false);
    }
}
